package com.xinke.query.model.entity;


import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.xinke.query.model.enums.FeedbackStatus;
import com.xinke.query.model.enums.QueryStatus;
import com.xinke.query.model.enums.QueryType;
import com.xinke.query.model.typeHandler.JsonTypeHandler2;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

import java.time.LocalDateTime;

@Schema(description = "高速信息表")
@TableName(value = "gaosu_info")
@Data
public class GaoSuInfo extends BaseEntity {
    private static final long serialVersionUID = 1L;

    /**
     * 申请查询唯一id，uuid
     */
    @Schema(description = "申请查询唯一id")
    @TableField(value="apply_id")
    private String applyId;

    /**
     * 查询条件（JSON类型）
     * 这里使用Map接收JSON数据，也可根据实际结构定义为实体类
     */
    @Schema(description = "查询条件（JSON类型）")
    @TableField(value = "query_jsonparams",typeHandler = JsonTypeHandler2.class)
    private QueryJsonParams queryJsonparams;

    /**
     * 查询数据类型:1-高速卡口/出口记录 ，2-etc登记信息，3-高速卡口/出入口图片信息
     */
    @Schema(description = "查询数据类型")
    @TableField(value="query_type")
    private QueryType queryType;

    /**
     * 文件二进制流
     * 注意：大文件建议存储路径而非二进制，这里仅按表结构映射
     */
    @Schema(description = "文件二进制流")
    @TableField(value="file_content")
     private byte[] fileContent;

    /**
     * 文件名称
     */
    @Schema(description = "文件名称")
    @TableField(value="file_name")
    private String fileName;

    /**
     * MD5加密
     */
    @Schema(description = "文件md5")
    @TableField(value="md5")
    private String md5;

    /**
     * 状态：0-入库中 ，1-已经完成， 2-处理中，4-查询失败 ，5-推送失败
     */
    @Schema(description = "查询任务状态")
    @TableField(value="status")
    private QueryStatus status;

    /**
     * 状态：0-入库中 ，1-已经完成， 2-处理中，4-查询失败 ，5-推送失败
     */
    @Schema(description = "查询下载状态")
    @TableField(value="feedback_status")
    private FeedbackStatus feedbackStatus;

    /**
     * 查询结果
     */
    @Schema(description = "查询结果")
    @TableField(value="result")
    private String result;

    @Schema(description = "完成时间")
    @TableField(value = "finished_time")
    private LocalDateTime finishedTime;


}
